﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Gsn.Base.Notification.Calendar;

namespace Gsn.Base
{
    public interface IEngine
    {
        bool Running { get; }

        void StartEngine(string userName, string password);
        void StopEngine();
    }

    public interface ICalendarEngine : IEngine
    {
        /// <summary>
        /// Requests a service event that notifies all listeners with a list of calendar events matching the
        /// criteria.
        /// </summary>
        /// <param name="titleOfList">The title that the generated service event should have.</param>
        /// <param name="fromDate">Star date & time for searching events.</param>
        /// <param name="toDate">End date & time for searching events.</param>
        void ListMatchingCalendarEvents(String titleOfList, DateTime fromDate, DateTime toDate);

        event CalendarNotificationHandler AlarmCalendarNotification;
        event CalendarNotificationHandler UpdateAlarmCalendarNotification;
        event CalendarNotificationHandler InformativeCalendarNotification;
    }

    public interface ICredentialsEngine : IEngine
    {
        String UserName { get; set; }
        String Password { get; set; }
    }
}
